#include <memory>

using namespace std;

int main()
{
    auto p = make_shared<int>(42);
    weak_ptr<int> wp(p); // wp 弱共享 p；p 的引用计数未改变

    if (shared_ptr<int> np = wp.lock()) { // 如果 np 不为空则条件成立
        // 在 if 中，np 与 p 共享对象，使用 np 访问共享对象是安全的
    }

    // 通过使用 weak_ptr，不会影响共享对象的生存期，但可以阻止用户访问一个不再存在的对象
}